home *** CD-ROM | disk | FTP | other *** search
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cut Here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % cd.sty - Commutative diagram macros modified from AmSTeX 3-Mar-89
- % Intended as a LaTeX style file. Darrel Hankerson (Bitnet: hank@auducvax)
-
- %\catcode`\@=11
- \def\ssize{\scriptstyle}
- \newdimen\ex@
- \ex@.2326ex
-
- \def\vspace@{\def\vspace##1{\noalign{\vskip##1\relax}}}
- \def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
-
- \let\ampersand@\relax
- \newdimen\bigaw@
- \newdimen\minaw@
- \minaw@11.11128\ex@
- \newdimen\minCDaw@
- \minCDaw@2.5pc
- \newif\ifCD@
- \def\minCDarrowwidth#1{\relax\ifmmode\ifinner\onlydmatherr@\minCDarrowwidth
- \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
- \def\CD{\bgroup\catcode`\@=\active %\catcode added for LaTeX
- \vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
- \CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@
- \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
- &\hfill$\m@th##$\hfill\cr}
- \def\endCD{\cr\egroup\egroup\egroup}
- \def\cd#1{\csname cd\string#1\endcsname}
- \def\cddef#1{\expandafter\def\csname cd\string#1\endcsname}
- \cddef.{\relax\ifmmode&&\else\leavevmode.\spacefactor3000 \fi}
- \cddef\rightarrow#1#2{\harrow@{#1}{#2}\rightarrowfill} \cddef>{\cd\rightarrow}
- \cddef\leftarrow#1#2{\harrow@{#1}{#2}\leftarrowfill} \cddef<{\cd\leftarrow}
- \def\harrow@#1#2#3{\ampersand@\setbox\z@\hbox{$\ssize
- \;\;{#1}\;$}\setbox\@ne\hbox{$\ssize\;\;{#2}\;$}\setbox\tw@
- \hbox{$#2$}\ifCD@
- \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
- \ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
- \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
- \ifCD@\hskip.5em\fi
- \ifdim\wd\tw@>\z@
- \mathrel{\mathop{\hbox to\bigaw@{#3}}\limits^{#1}_{#2}}\else
- \mathrel{\mathop{\hbox to\bigaw@{#3}}\limits^{#1}}\fi
- \ifCD@\hskip.5em\fi\ampersand@}
- \cddef\uparrow#1#2{\llap{$\vcenter{\hbox
- {$\ssize#1$}}$}\Big\uparrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \cddef\downarrow#1#2{\llap{$\vcenter{\hbox
- {$\ssize#1$}}$}\Big\downarrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \cddef=#1#2{\ampersand@\setbox\z@\hbox{$\ssize
- \;{#1}\;\;$}\setbox\@ne\hbox{$\ssize\;{#2}\;\;$}\setbox\tw@
- \hbox{$#2$}\ifCD@
- \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
- \ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
- \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
- \ifCD@\hskip.5em\fi
- \ifdim\wd\tw@>\z@
- \mathrel{\mathop{\vbox{\hrule width\bigaw@\vskip3\ex@\hrule width
- \bigaw@}}\limits^{#1}_{#2}}\else
- \mathrel{\mathop{\vbox{\hrule width\bigaw@\vskip3\ex@\hrule width
- \bigaw@}}\limits^{#1}}\fi
- \ifCD@\hskip.5em\fi\ampersand@}
- \cddef|#1#2{\llap{$\vcenter{\hbox
- {$\ssize#1$}}$}\Big\vert\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \cddef\|#1#2{\llap{$\vcenter{\hbox
- {$\ssize#1$}}$}\Big\vert\Big\vert\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \def\pretend#1\haswidth#2{\setbox\z@\hbox{$\scriptstyle{#2}$}\hbox
- to\wd\z@{\hfill$\scriptstyle{#1}$\hfill}}
- \cddef\updownarrows#1#2{\llap{$\vcenter{\hbox{$\ssize#1$}}$}
- \Big\uparrow\Big\downarrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \cddef\downuparrows#1#2{\llap{$\vcenter{\hbox{$\ssize#1$}}$}
- \Big\downarrow\Big\uparrow\rlap{$\vcenter{\hbox{$\ssize#2$}}$}&&}
- \cddef\rightleftarrows#1#2{\harrows@{#1}{#2}\rightarrowfill\leftarrowfill}
- \cddef\leftrightarrows#1#2{\harrows@{#1}{#2}\leftarrowfill\rightarrowfill}
- \def\harrows@#1#2#3#4{\ampersand@\setbox\z@\hbox{$\ssize
- \;{#1}\;\;$}\setbox\@ne\hbox{$\ssize\;{#2}\;\;$}\setbox\tw@
- \hbox{$#2$}\ifCD@
- \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
- \ifdim\wd\z@>\bigaw@\global\bigaw@\wd\z@\fi
- \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi
- \ifCD@\hskip.5em\fi
- \ifdim\wd\tw@>\z@
- \mathrel{\mathop{\harrowsfill@#3#4}\limits^{#1}_{#2}}\else
- \mathrel{\mathop{\harrowsfill@#3#4}\limits^{#1}}\fi
- \ifCD@\hskip.5em\fi\ampersand@}
- \def\harrowsfill@#1#2{\stackrel{\raisebox{0pt}[2\ex@][0pt]{\hbox
- to\bigaw@{#1}}}{\raisebox{-1\ex@}[0pt][0pt]{\hbox to \bigaw@{#2}}}}
- %\endinput % End here if AmSTeX @-syntax not needed.
-
- %%%%% The following code adds the AmSTeX @-syntax %%%%%
- %\newlinechar=`\^^J
- \def\err@#1{\errmessage{AmS-TeX error: #1}}
- \newhelp\athelp@
- {Only certain combinations beginning with @ make sense to me.^^J
- Perhaps you wanted \string\@\space for a printed @?^^J
- I've ignored the character or group after @.}
- \def\futureletnextat@{\futurelet\next\at@}
- {\catcode`\@=\active
- \lccode`\Z=`\@ \lccode`\I=`\I \lowercase
- {\gdef@{\expandafter\csname futureletnextatZ\endcsname}\expandafter
- \gdef\csname atZ\endcsname
- {\ifcat\noexpand\next a\def\next{\csname atZZ\endcsname}\else
- \ifcat\noexpand\next0\def\next{\csname atZZ\endcsname}\else
- \ifcat\noexpand\next\relax\def\next{\csname atZZZ\endcsname}\else
- \def\next{\csname atZZZZ\endcsname}\fi\fi\fi\next}
- \expandafter\gdef\csname atZZ\endcsname#1{\expandafter
- \ifx\csname #1Zat\endcsname\relax\def\next
- {\errhelp\expandafter=\csname athelpZ\endcsname
- \csname errZ\endcsname{Invalid use of \string@}}\else
- \def\next{\csname #1Zat\endcsname}\fi\next}
- \expandafter\gdef\csname atZZZ\endcsname#1{\expandafter
- \ifx\csname \string#1ZZat\endcsname\relax\def\next
- {\errhelp\expandafter=\csname athelpZ\endcsname
- \csname errZ\endcsname{Invalid use of \string@}}\else
- \def\next{\csname \string#1ZZat\endcsname}\fi\next}
- \expandafter\gdef\csname atZZZZ\endcsname#1{\errhelp
- \expandafter=\csname athelpZ\endcsname
- \csname errZ\endcsname{Invalid use of \string@}}}}
- \def\atdef@#1{\expandafter\def\csname #1@at\endcsname}
- \def\atdef@@#1{\expandafter\def\csname \string#1@@at\endcsname}
- \newhelp\defahelp@{If you typed \string\define\space cs instead of
- \string\define\string\cs\space^^J
- I've substituted an inaccessible control sequence so that your^^J
- definition will be completed without mixing me up too badly.^^J
- If you typed \string\define{\string\cs} the inaccessible control sequence^^J
- was defined to be \string\cs, and the rest of your^^J
- definition appears as input.}
- \newhelp\defbhelp@{I've ignored your definition, because it might^^J
- conflict with other uses that are important to me.}
- \atdef@.{\cd.} % AmSTeX @-format
- \atdef@>#1>#2>{\cd\rightarrow{#1}{#2}}
- \atdef@<#1<#2<{\cd\leftarrow{#1}{#2}}
- \atdef@ A#1A#2A{\cd\uparrow{#1}{#2}}
- \atdef@ V#1V#2V{\cd\downarrow{#1}{#2}}
- \atdef@|{\Big\Vert&&}
- \atdef@@\vert{\Big\Vert&&}
- \atdef@={&\hskip.5em\mathrel
- {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
- \minCDaw@}}\hskip.5em&}
- %\catcode`\@=\active
- \endinput
-